package com.authine.cloudpivot.ext.dto.model.settle;

import com.authine.cloudpivot.ext.Enum.SettleType;
import com.authine.cloudpivot.ext.dto.model.invoice.InvoiceApply;
import com.authine.cloudpivot.ext.dto.model.invoice.OffsetInvoice;
import com.authine.mvp.app.launcher.domain.AttachmentFormat;
import com.authine.mvp.app.launcher.domain.SelectorFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@Schema(description = "销售退款结算申请")
public class SettleRedInvoice {
    /**
     * 被退款的结算单ID *
     */
    @Schema(description = "被退款的结算单ID, 必填")
    private String settle_id;
    /**
     * 红票单列表 *
     * 选择或者生成红票后，进行退款核销
     */
//    @Schema(description = "红票单列表")
//    private List<InvoiceApply> redInvoiceApplyList;
    /**
     * 结算明细列表 *
     * 蓝票全部红冲时，再申请退款，需要勾选原结算的明细
     */
//    @Schema(description = "结算明细列表")
//    private List<SettleDetail> settleDetailList;
    /**
     * 红冲操作时红票信息 *
     * 对蓝票进行红冲操作并进行退款核销时
     */
//    @Schema(description = "红冲操作时红票信息")
//    private OffsetInvoice offsetInvoice;
    /**
     * 结算申请明细（根据红票生成的）
     */
//    @Schema(description = "结算申请明细")
//    private List<SettleInvoiceDetail> settleInvoiceDetailList;
    /**
     * 被红冲的蓝票单ID
     */
//    @Schema(description = "被红冲的蓝票单ID")
//    private String invoice_apply_id;

    /**
     * 退款支付类型 *
     */
    @Schema(description = "退款支付类型")
    private SettleType type;
    
    /**
     * 付款金额
     */
    @Schema(description = "付款金额")
    private BigDecimal total;
    /**
     * 采购收款组织ID
     */
    @Schema(description = "采购收款组织ID", hidden = true)
    private SelectorFormat purchase_organization_id;
    /**
     * 采购收款组织名称
     */
    @Schema(description = "采购收款组织名称", hidden = true)
    private String purchase_organization_name;
    /**
     * 收款组织抬头
     */
    @Schema(description = "付款组织抬头")
    private String purchase_name;
    /**
     * 采购方开户行
     */
    @Schema(description = "采购方开户行")
    private String purchase_bank_info;
    /**
     * 采购收款银行账号
     */
    @Schema(description = "采购收款银行账号")
    private String purchase_bank_no;
    /**
     * 采购收款银行账户名
     */
    @Schema(description = "采购收款银行账户名")
    private String purchase_bank_account;
    /**
     * 采购收款电话
     */
    @Schema(description = "采购收款电话")
    private String purchase_phone;
    /**
     * 采购收款备注
     */
    @Schema(description = "采购收款备注")
    private String purchase_memo;
    /**
     * 销售付款组织ID
     */
    @Schema(description = "销售付款组织ID", hidden = true)
    private SelectorFormat sale_organization_id;
    /**
     * 销售付款组织名称
     */
    @Schema(description = "销售付款组织名称", hidden = true)
    private String sale_organization_name;
    /**
     * 销售方开户行
     */
    @Schema(description = "销售方开户行")
    private String sale_bank_info;
    /**
     * 销售方银行账号
     */
    @Schema(description = "销售方银行账号")
    private String sale_bank_no;
    /**
     * 付款时间
     */
    @Schema(description = "付款时间")
    private Date confirm_time;
    /**
     * 当前操作申请人用户ID
     */
    @Schema(description = "当前操作申请人用户ID", hidden = true)
    private String applyMemberId;
    /**
     * 当前操作申请人用户全称
     */
    @Schema(description = "当前操作申请人用户全称", hidden = true)
    private String apply_member_name;

    /**
     * 扩展信息（服务费发票信息）
     */
    @Schema(description = "扩展信息（服务费发票信息）")
    private String extends_attr;

    @Schema(description = "附件")
    private List<AttachmentFormat> bank_serial_image;



}
